// 对于axios进行第二次封装请求
import axios from 'axios'

// 引入进度条nprogress
import nprogress from 'nprogress'
// 引入进度条的样式
import 'nprogress/nprogress.css';
// start进度条开始 done 进度条结束

// 1. 利用axios对象的方法create 去创建一个axios实例
// 2. req就是axiox
const req = axios.create({
     // 配置对象
     // 基础路径 发送请求的时候 路径当中会出现aoi
     baseURL: '/mock',
     // 请求超时的时间5s
     timeout: 5000
});
// 请求拦截器：在发送请求之前，可以检测到，并在请求发送出去之前做一些事情
req.interceptors.request.use((config) => {
     // 进度条开始
     nprogress.start();
     // config: 配置对象，里面有个headers请求头很重要
     return config;
});

// 响应拦截器
req.interceptors.response.use((res) => {
     // 成功的回调函数: 服务器相应数据返回来以后，响应拦截器可以检测到，可以做一些事情
     // 进度条结束
     nprogress.done();
     return res.data;
}, (error) => {
     // 响应失败的回调函数
     return Promise.reject(new error('faile'));
})


// 暴露axiox
export default req;